package cam.School.DataAccessObject;

import java.util.Date;
import java.util.List;

import cam.School.DAOException.DAOException;
import cam.School.DataTransfertObject.CallResult;
import cam.School.DataTransfertObject.ClassRoomDTO;
import cam.School.DataTransfertObject.PaymentDTO;


public interface PaymentDAO {
	
	public PaymentDTO getById(Long id) throws DAOException;

	public List<PaymentDTO> getAll() throws DAOException;

	public CallResult add(PaymentDTO payment) throws IllegalArgumentException,
			DAOException;

	public void update(PaymentDTO payment) throws IllegalArgumentException,
			DAOException;

	public boolean delete(int paymentId);

	public List<PaymentDTO> getByTo(long to);
	
	public List<PaymentDTO> getByFrom(long from);
	
	public List<PaymentDTO> getByQuarter(String quarter);

	public List<PaymentDTO> getByExecutedBy(String name);
	
	public List<PaymentDTO> getByExecutionDate(Date date);


	public PaymentDTO getByRange(Date from, Date to);

	
	public int update(long id);
	
	public List<PaymentDTO> getByOrganisatorId(long organisatorId);
	
	public List<PaymentDTO> getByMatriculNumber(String matriculNumber);


}
